package org.bb.arithmetic.p35;

import java.io.Serializable;

public class SeqList implements IList {
	final int defaultSize = 10;// 默认线性表长度
	int maxSize;// 线性表长度
	int size;// 线性表中表现有元素个数
	Object[] listArray;// 用对象数组存储线性表

	// 无参
	public SeqList() {
		initiate(defaultSize);
	}

	// 带线性表长度构造
	public SeqList(int size) {
		initiate(size);
	}

	// 初始化方法，设置线性表长度
	public void initiate(int sz) {
		maxSize = sz;
		size = 0;
		listArray = new Object[sz];
	}

	// 在指定下标位置插入数据元素
	@Override
	public void insert(int i, Object obj) throws Exception {
		if (size == maxSize) {
			throw new Exception("线性表已满，无法插入!");
		}
		// 只允许在现有相性表数据元素之前或之后插入，不允许在一个空位置之后插入数据元素
		if (i > size) {
			throw new Exception("插入下标位置错误!");
		}
		// 将插入位置后的元素全部后移
		for (int j = size; j > i; j--) {
			listArray[j] = listArray[j - 1];
		}
		// 插入数据元素，并增加线性表中出现元素个数
		listArray[i] = obj;
		size++;

	}

	// 实现删除指定下标位置的数据元素
	@Override
	public Object delete(int i) throws Exception {
		if (size==0) {
			throw new Exception("线性表已空，无法删除");
		}
		if (i>size-1) {
			throw new Exception("删除下标位置错误!");
		}
		//获取被删除的数据元素
		Object it = listArray[i];
		
		return null;
	}

	@Override
	public void update(int i, Object obj) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public Object getData(int i) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public int size() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public boolean isEmpty() {
		// TODO Auto-generated method stub
		return false;
	}

}
